#ifndef SOIL_SENSOR_H
#define SOIL_SENSOR_H

#include "stm32l4xx_hal.h"
#include "cmsis_os.h"  // 用于队列操作

// 传感器数据结构
typedef struct {
    float temperature;  // 温度 (°C)
    float humidity;     // 湿度 (%)
    float EC;     // 盐分 (μS/cm)
    // float cond_raw;     // 电导率 (μS/cm)
} SensorQueue_t;

// 传感器错误代码
typedef enum {
    SENSOR_OK = 0,
    SENSOR_CRC_ERROR,
    SENSOR_TIMEOUT,
    SENSOR_INVALID_RESPONSE,
    SENSOR_INVALID_DATA
} SensorError_t;

// 库初始化函数
void SoilSensor_Init(UART_HandleTypeDef *huart, osMessageQueueId_t dataQueue);

// 数据采集函数
SensorError_t SoilSensor_ReadData(void);

// 获取最后错误信息
SensorError_t SoilSensor_GetLastError(void);

// CRC16计算函数
uint16_t SoilSensor_CRC16(uint8_t *data, uint16_t length);

// UART 中断回调函数
void RS485_RxHandler(void);

#endif // SOIL_SENSOR_H